package removeDuplicates;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;

public class Solution {
    public int removeDuplicates(int[] nums) {
//        HashSet<Integer>set = new HashSet<>();
//        for (int i = 0; i < nums.length; i++) {
//            set.add(nums[i]);
//        }
//        int index = 0;
//        Object[] res = set.toArray();
//        Arrays.sort(res);
//        for (int i = 0; i < res.length; i++) {
//            nums[i] =(int) res[i];
//        }
//        return res.length;
//        int i = 0;
//        int j = 1;
//        int index = 0;
//        while(j<nums.length){
//            if(nums[i]==nums[j]){
//                j++;
//            }else{
//                nums[index] = nums[i];
//                index++;
//                i = j;
//                j++;
//            }
//        }
//        return index+1;

        // 双指针
        int fast = 1;
        int slow = 1;
        int n = nums.length;
        while(fast<n){
            if(nums[fast]!=nums[fast-1]){
                nums[slow] = nums[fast];
                slow++;
            }
            fast++;
        }
        return slow;

    }
    //   s f
    // 1 1 2 2 3 4
    // 1 2
}
//class Solution {
//    public int removeDuplicates(int[] nums) {
//        int n = nums.length;
//        if (n == 0) {
//            return 0;
//        }
//        int fast = 1, slow = 1;
//        while (fast < n) {
//            if (nums[fast] != nums[fast - 1]) {
//                nums[slow] = nums[fast];
//                ++slow;
//            }
//            ++fast;
//        }
//        return slow;
//    }
//}
